// 新建 src/utils/crypto.js

import CryptoJS from 'crypto-js/crypto-js'

// 十六位十六进制数作为秘钥
const SECRET_KEY = CryptoJS.enc.Utf8.parse(process.env.VUE_APP_AES_SECRET_KEY)
// 十六位十六进制数作为秘钥偏移量
const SECRET_IV = CryptoJS.enc.Utf8.parse(process.env.VUE_APP_AES_SECRET_IV)

/**
 * AES加密
 * @param content 内容
 * @return {string} base64字符串
 * @constructor
 */
export function Encrypt(content) {
  // CryptoJS.enc.Utf8.parse(str)
  const encrypted = CryptoJS.AES.encrypt(content, SECRET_KEY, {
    iv: SECRET_IV,
    // mode: CryptoJS.mode.ECB,
    mode: CryptoJS.mode.CBC, // mode 与后台一致
    padding: CryptoJS.pad.Pkcs7
  })
  return encrypted.toString()
}

/**
 * AES 解密
 * @param contentBase64
 * @return {string}
 * @constructor
 */
export function Decrypt(contentBase64) {
  // CryptoJS.enc.Base64.stringify(CryptoJS.enc.Base64.parse(str))
  // byte[]
  const decrypt = CryptoJS.AES.decrypt(contentBase64, SECRET_KEY, {
    iv: SECRET_IV,
    // mode: CryptoJS.mode.ECB,
    mode: CryptoJS.mode.CBC, // 保持一致
    padding: CryptoJS.pad.Pkcs7
  })
  return decrypt.toString(CryptoJS.enc.Utf8)
}
